#include "execute_task.h"
#include "stdio.h"

TaskHandle_t executeHandler;
void showContrl();
void alarmContrl();
//void airContrl();
//void curtainContrl();




//采集的数据已经处理好的
extern TargetGatherData targetData;
THData thData;
//执行模块初始化
void init_execute(){
    //1.后面还有配置模块，当前配置模块已经把数据加载好了，此处就直接使用
    //2.阈值数据和功能控制开关 都自己给一些默认值
    if (thData.state==0)
    {
       //如果机器重启 就需要自己去从at24芯片中去加载数据
       loadTHData(&thData);
				//printf("state:%d",thData.state);
       
    }
    //对可能要使用到的外设做初始化
    ledInit();
    BEEP_Init();
    OLED_Init();


}
//执行模块的任务
void execute_task(void * param){

    while (1)
    {
//			printf("state:%d",thData.state);
       //判断用户要做哪些控制
       if(thData.state&0x01){//进行显示
            showContrl();
       } 
       if(thData.state&0x02){//进行告警
            alarmContrl();
       } 
       if(thData.state&0x04){//进行空调
            //airContrl();
       } 
       if(thData.state&0x08){//进行窗帘
            //curtainContrl();
       } 
  
       vTaskDelay(10);
    }
    
}

void createExecuteTask(){
    xTaskCreate(
        execute_task,
        "execute_task",
        128,
        NULL,
        2,
        &executeHandler
    );
}

void showContrl(){
    //在oled屏幕显示温度和湿度
			OLED_ShowString(0,0,"set sunshine:",12);
     OLED_ShowNum(80,0,thData.sunshine,3,12);
	   OLED_ShowString(0,10,"detected sunshine:",12);
	   OLED_ShowNum(105,10,targetData.sunshine,3,12);
	   OLED_ShowString(0,20,"state:",12);
     OLED_ShowNum(40,20,thData.state,3,12);
	   OLED_Refresh_Gram();

}
void alarmContrl(){
    u8 beepflag=0;
    if(targetData.temp<thData.tempMin || targetData.temp >thData.tempMax){
        //点亮第一个led灯
        LED2=0;
        beepflag=1;
    }else{
        LED2=1;
    }

    if(targetData.humi<thData.humiMin || targetData.humi >thData.humiMax){
        //点亮第一个led灯
        LED3=0;
        beepflag=1;
    }else{
        LED3=1;
    }
    if(targetData.smoke>thData.smoke){
        //点亮第一个led灯
        LED4=0;
        beepflag=1;
    }else{
        LED4=1;
    }

    if(targetData.sunshine>thData.sunshine){
        //点亮第一个led灯
        LED5=0;
        beepflag=1;
    }else{
        LED5=1;
    }

    //雨水
    if (!targetData.raidrop)
    {
        LED6=0;
        beepflag=1;
    }else{
        LED6=1;
    }
 
    if(!beepflag){
        BEEP=1;//不响
    }else{
      
        BEEP=!BEEP;
        delay_us(20);
      
    }


}
//空调  控制 发送红外信息
//void airContrl(){

//}

//void curtainContrl(){


//}


void setTHdata(THData dataTemp){
    thData=dataTemp;
}
